<?php

// load SOAP library
require_once("libs/nusoap.php");
require_once("libs/functions.php");
// load library that holds implementations of functions we're making available to the web service
// set namespace

$ns="http://localhost/";
// create SOAP server object

$server = new soap_server();

// setup WSDL file, a WSDL file can contain multiple services
$server->configureWSDL('Calculator',$ns);
$server->wsdl->schemaTargetNamespace=$ns;
$server->wsdl->addComplexType(
    'ArrayOfString',
    'complexType',
    'array',
    '',
    'SOAP-ENC:Array',
    array(),
    array(array('ref'=>'SOAP-ENC:arrayType','wsdl:arrayType'=>'xsd:string[]')),
    'xsd:string'
);


/**
  *************************************** 
  ** REGISTRO LOS WEB METODOS          **
  ***************************************
**/
$server->register('hello',
	array('name' => 'xsd:string'), 	// input parameters
	array('saludo' => 'xsd:string'), 							// output parameter
	$ns, 														// namespace
    "$ns#ws_add",		                						// soapaction
    'rpc',                              						// style
    'encoded',                          						// use
    'adds two integer values and returns the result'           	// documentation
	);

$server->register('ws_add',
	array('int1' => 'xsd:integer','int2' => 'xsd:integer'), 	// input parameters
	array('total' => 'xsd:integer'), 							// output parameter
	$ns, 														// namespace
    "$ns#ws_add",		                						// soapaction
    'rpc',                              						// style
    'encoded',                          						// use
    'adds two integer values and returns the result'           	// documentation
	);



$server->register('registrarAlumno',
	array('idAlumno' => 'xsd:string', 'nombre' => 'xsd:string', 'serial' => 'xsd:string', 'idEscuela' => 'xsd:string'), 	// input parameters
	array('retorno' => 'xsd:string'), 										// output parameter
	$ns, 															// namespace
       "$ns#ws_add", 'rpc', 'encoded',
       'Registro del alumno'
	);

$server->register('obtenerEscuelas',
	array(), 	// input parameters
	array('retorno' => 'tns:ArrayOfString'), 							// output parameter
	$ns, 														// namespace
       "$ns#ws_add", 'rpc', 'encoded',
       'Obtener todas las escuelas'
	);



/**
  *************************************** 
  ** IMPLEMENTACION DE LOS WEB METODOS **
  ***************************************
**/
require_once("persistencia.php");
require_once("leccion.php");


function hello($name) {
    return 'Mbaeteko, ' . $name;
}

function ws_add($int1, $int2){
   $a=$int1+$int2;
   return $a;
}

function registrarAlumno(idAlumno, nombre, serial, idEscuela){
    $sep = "#@#"; 
    $a = explode($sep, $estudiante);
    $idestudiante    = $a[0]; 
    $idescuela       = $a[1];
    $nombre          = $a[2];
    $apellido        = $a[3];
    $fecha_nacimiento= $a[4];
    $genero          = $a[5];
    $cedula          = $a[6];
    $ultimoIdSesion  = $a[7];

    $stmSelect = "SELECT * FROM estudiante WHERE trim(upper(idestudiante)) = trim(upper('".$idestudiante."'))";
    $stmInsert = "INSERT INTO ESTUDIANTE (idestudiante, idescuela, nombre, apellido, 
                                          fecha_nacimiento, genero, cedula, ultimonrosession ) 
                                VALUES ( '$idestudiante', NULL, '$nombre', '$apellido', 
                                          NULL, '$genero', '$cedula', '$ultimoIdSesion' )";


    $stmUpdate = "UPDATE ESTUDIANTE SET nombre = '$nombre', apellido = '$apellido', 
                                        genero = '$genero', cedula = '$cedula', ultimonrosession = '$ultimoIdSesion' 
			 WHERE trim(upper(idestudiante)) = trim(upper('".$idestudiante."'))";

    $mens = "";
    $bd = new persistencia();
    if ( !$bd->conectar() ) {
	//Buscamos si existe en la BD 
	$resultado = $bd->consultar($stmSelect);

	//por si hay errores en la consulta
	if ( !$resultado ) { 
		$mens = "ERR-CON-".pg_last_error($bd->conexion); 
		$bd->desconectar();

	}else{
		$fila = pg_fetch_array($resultado);
		if( !$fila ) {
			//INSERTAMOS, ya que no encontramos ningun registro
			$resultadoInsert = $bd->consultar($stmInsert);
			if ( !$resultadoInsert ) { 
				$mens = "ERR-INS-".pg_last_error($bd->conexion); 
			}else{
				$mens = $stmInsert;
			}
		}else {
			//ACTUALIZAMOS
			$resultadoUpdate = $bd->consultar($stmUpdate); 
			if ( !$resultadoUpdate ) { 
				$mens = "ERR-UPD-".pg_last_error($bd->conexion); 
			}else{
				$mens = $stmUpdate;
			}
		}
		$bd->desconectar();
	}
    }else{
	$mens = "ERR-".pg_last_error($bd->conexion); 
    }

    return $mens;
}




function obtenerEscuelas(){
    $sep = "#@#";
    $ret = "";
    $retarray = array();
    $bd = new persistencia();
    if ( !$bd->conectar() ) 
    {
        $resultado = $bd->consultar("SELECT * FROM Escuelas order by idEscuela");
        if ( $resultado ) 
        { 
           while ($fila = pg_fetch_array($resultado)) 
           {
              $ret = $fila["idEscuela"];
              $ret = $ret.$sep.$fila["nombre"];
              $ret = $ret.$sep.$fila["ciudad"];
              $retarray[] = $ret;
           }
        }
        $bd->desconectar();
    }
    return $retarray;
}


// service the methods 
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
?>


